#ifndef DSPSIMULATOR_DOUBLEREG_H
#define DSPSIMULATOR_DOUBLEREG_H

#include <vector>
#include "dspSimulator/operand/operand.h"

class DoubleReg : public Operand {
private:
    RegKind m_regLo;
    RegKind m_regHi;
public:
    DoubleReg(RegKind regLo, RegKind regHi) :
            m_regLo(regLo), m_regHi(regHi), Operand(OperandKind::TWO_REG) {}

    ~DoubleReg() override = default;

    std::vector<RegKind> getRegs() const {
        return {m_regLo, m_regHi};
    }

    std::string toString() override {
        std::string str = RegNames[static_cast<u32>(m_regLo)];
        str += ":";
        str += RegNames[static_cast<u32>(m_regHi)];
        return std::move(str);
    }
};

#endif //DSPSIMULATOR_DOUBLEREG_H
